package edu.hut;
/**
 * 三角形类，实现了 Polygon 接口。
 * @author GuoQian
 * @version 1.0
 * @since 2024-11-14
 */
public class Triangle implements Polygon{

    Vertex[] vertices;

    /**
     * 三角形的构造方法，通过三个顶点构造一个三角形
     * @param v1 顶点1
     * @param v2 顶点2
     * @param v3 顶点3
     */
    public Triangle(Vertex v1, Vertex v2, Vertex v3) {vertices = new Vertex[]{v1, v2, v3};}
    @Override
    public void draw() {
        System.out.println("draw triangle");
    }

    /**
     * 判断给定的三个顶点是否可以构成一个三角形。
     *
     * @return 如果可以构成三角形返回 true，否则返回 false。
     */
    @Override
    public  boolean canForm() {
        float a = vertices[0].calcDistance(vertices[1]);
        float b = vertices[1].calcDistance(vertices[2]);
        float c = vertices[2].calcDistance(vertices[0]);
        return a + b > c && a + c > b && b + c > a;
    }

    /**
     * 计算三角形的面积。
     *
     * @return 三角形的面积。
     */
    @Override
    public  float calcArea() {
        float a = vertices[0].calcDistance(vertices[1]);
        float b = vertices[1].calcDistance(vertices[2]);
        float c = vertices[2].calcDistance(vertices[0]);
        float s = (a + b + c) / 2;
        return (float) Math.sqrt(s * (s - a) * (s - b) * (s - c));
    }
}
